#ifndef SUDOKU_RELATIONS_H
#define SUDOKU_RELATIONS_H

#include <fstream>
#include <iostream>
#include <vector>
#include <set>

#include "sudoku_board.h"
#include "sudoku_definition.h"

class SudokuDefinition;

//Założenia
// - available set to 1..n
// - gdzie n = size

using namespace std;

class SudokuRelations
{
    public:
        SudokuRelations(SudokuDefinition* psuDef);
        map<int,set<int>*>* getOrderedMapAvailables(map<int,int>*); //order by number of availables items
        //std::map<int,std::set<int>* >* getMapAvailables(std::map<int,int>* sudBoard);
    private:
        SudokuDefinition* suDef;
        //std::vector<Group*> groups;
        map<int,set<int>*> availables;
        //std::map<int, std::map<int,std::vector<Group*> > > orderedAvailables; //order by number of available items
        //void rebuildAll(); //rebuild all: relations and ordering
        //void rebuildRelations();
        //void rebuildOrderedRelations();
};

#endif // SUDOKU_RELATIONS_H
